package com.yoda.youdianda.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yoda.youdianda.domain.SysUser;
import com.yoda.youdianda.domain.YddUser;
import com.yoda.youdianda.mapper.YddUserMapper;
import com.yoda.youdianda.service.YddUserService;
import com.yoda.youdianda.vo.PageResult;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author shawn
 * @date 2022年 11月 13日 19:52
 */
@Service
public class YddUserServiceImpl implements YddUserService {

    @Autowired
    private YddUserMapper yddUserMapper;

    @Override
    public PageResult getYddUserList(Integer sex, String username, String mobile, Integer page, Integer limit) {
        Page<YddUser> yddUserPage = new Page<>(page, limit);
        LambdaQueryWrapper<YddUser> lqw = new LambdaQueryWrapper<>();
        lqw.eq(sex != null, YddUser::getSex, sex);
        lqw.like(StringUtils.isNotEmpty(username), YddUser::getUsername, username);
        lqw.like(StringUtils.isNotEmpty(mobile), YddUser::getMobile, mobile);
        yddUserPage = yddUserMapper.selectPage(yddUserPage, lqw);
        PageResult pageResult = new PageResult((int) yddUserPage.getCurrent(), (int) yddUserPage.getSize(), (int) yddUserPage.getTotal(), yddUserPage.getRecords());
        return pageResult;
    }

    @Override
    public List<YddUser> getAllUser() {
        return yddUserMapper.selectList(new LambdaQueryWrapper<>());
    }

    @Override
    public YddUser getById(Integer id) {
        return yddUserMapper.selectById(id);
    }

    @Override
    public void save(YddUser yddUser) {
        yddUserMapper.insert(yddUser);
    }

    @Override
    public void updateById(YddUser yddUser) {
        yddUserMapper.updateById(yddUser);
    }

    @Override
    public void removeById(Integer id) {
        yddUserMapper.deleteById(id);
    }

    @Override
    public YddUser selectUserByPhone(String phone) {
        LambdaQueryWrapper<YddUser> lqw = new LambdaQueryWrapper<>();
        lqw.eq(YddUser::getMobile, phone);
        List<YddUser> sysUsers = yddUserMapper.selectList(lqw);

        YddUser yddUser = sysUsers.get(0);
        return yddUser;
    }

    @Override
    public YddUser selectById(String userId) {
        YddUser yddUser = yddUserMapper.selectById(userId);
        return yddUser;
    }

    @Override
    public void updateUserInfo(YddUser yddUser) {
        yddUserMapper.updateById(yddUser);
    }
}

